/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package vzone.business;

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import vzone.structs.OperatorCode;

/**
 *交易操作的泛型接口
 * TypeA 提供交易的主体
 * TypeB 主体提供的物品
 *
 * 例如 饭店提供食物 TypeA=饭店(Company) TypeB=食物(Dish)
 *
 * @author Kingpro
 * @param <TypeA> 本体类型
 * @param <TypeB> 本体提供的类型
 */
public interface IBusiness<TypeA, TypeB>
{

   /**
     * 列出所有的项目
     *
     * @return 所有项目的列表
     */
    public List<TypeB> ListAll();

    /**
     *购买物品
     *
     * @param objsL 需要的项目
     * @param idUuid 用户Id
     * @param pwdHashS 用户密码哈希
     * @return 操作状态码
     */
    public OperatorCode BuyObjects(ArrayList<TypeB> objsL, UUID BillingID);

    /**
     * 获取该对象的信息
     *
     * @return 对象
     */
    public TypeA GetBusinessInfo();
}
